package cn.catsdad.service.api;

import cn.catsdad.base.service.api.IBaseCrudService;
import cn.catsdad.dto.UserDTO;
import cn.catsdad.vo.TreeNodeVO;
import cn.catsdad.vo.UserDropdownQueryVo;

import java.util.Collection;
import java.util.List;

/**
 * 用户service
 *
 * @author xuyonglong
 * @version V1.0 2023/4/10
 */
public interface UserService extends IBaseCrudService<UserDTO, Long> {

    /**
     * 根据用户名查询用户
     *
     * @param loginName 登录名
     * @return 用户
     */
    UserDTO queryUserByLoginName(String loginName);

    /**
     * 登录密码验证
     *
     * @param user     登录的用户
     * @param password 用户密码
     */
    void loginPasswordValidate(UserDTO user, String password);

    /**
     * 批量重置密码
     *
     * @param ids 用户id集合
     */
    void batchResetPassword(Collection<Long> ids);

    /**
     * 绑定角色
     *
     * @param userId  用户id
     * @param roleIds 角色id集合
     */
    void bingRoles(Long userId, Collection<Long> roleIds);

    /**
     * 修改密码
     *
     * @param user 数据传输对象
     */
    void editPassword(UserDTO user);

    /**
     * 人员下拉框数据
     *
     * @param vo 查询传输对象
     * @return 下拉框数据
     */
    List<UserDTO> dropDown(UserDropdownQueryVo vo);

    /**
     * 查询用户具备的功能项权限
     *
     * @param userId 用户id
     * @return 权限树形
     */
    List<TreeNodeVO> queryMenuTree(Long userId);

    /**
     * 根据id统计
     *
     * @param id 用户id
     * @return 数量
     */
    int countById(Long id);
}
